package factorymethod;

import factorymethod.factory.ShipFactory;
import factorymethod.factory.TransportFactory;
import factorymethod.factory.TruckFactory;

/**
 * 主程序
 * 工厂方法模式（Factory Method）是一种创建型设计模式， 其在父类中提供一个创建对象的方法， 允许子类决定实例化对象的类型，
 * 使一个类的实例化延迟到其子类。
 * 假设你正在开发一款物流管理应用。 最初版本只能处理卡车运输， 因此大部分代码都在位于名为 卡车{@link factorymethod.prodcut.Truck}的类中。
 * 此时，我们希望应用能够支持海上物流功能，因此创建了{@link factorymethod.prodcut.Ship}。
 * 我们将工厂的部分抽象为一个接口{@link TransportFactory}，不同的运输方式通过具体的工厂来实现{@link TruckFactory} {@link ShipFactory}
 * 这样我们就将实例化的过程下放给不同的字类，由子类决定实例化哪一个类。
 *
 * @author Liu Yicong
 * @date 2025/9/20
 */
public class FMClient {
	public static void main(String[] args) {
		// 创建卡车的场景
		TransportFactory roadFactory = new TruckFactory();
		roadFactory.planDelivery("上海");

		// 创建轮船的场景
		TransportFactory seaFactory = new ShipFactory();
		seaFactory.planDelivery("旧金山");

	}
}
